package com.qfedu.spring.mvc.controller;

import com.qfedu.spring.mvc.entity.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;

/**
 * @auther asus
 * @date 2022/4/29 9:49
 */
@Controller //这个注解标识当前类作为一个控制器
@RequestMapping("hello")
public class HelloController {

    // @RequestMapping 请求地址的映射关系，如果请求的地址是/hello，就交给这个方法处理请求
    // 前端传递的参数名称，如果跟方法的参数名称一致就可以自动接收
    // 如果前端传递的参数名和方法的形参名称不一样可以使用 @RequestParam("name") 注解中的字串跟前端传的参数名一致就行
    @RequestMapping("test1") //访问路径
    //required = false非必传参数
    public String hello(Integer id, @RequestParam(value = "username",required = false) String name, @DateTimeFormat(pattern = "yyyy-MM-dd") Date birthday){
        System.out.println("Hello SpringMVC");
        System.out.println("id=" + id + ",name=" + name + ",birthday=" + birthday);

        //返回的字串，就是转发的路径 视图的地址
//        return "/index.jsp";
        return  "index";
    }

    // 如果类上和方法上都有 @RequestMapping,那么映射的请求路径就是类上的地址+方法的地址 /hello/test1
    // 参数可以封装成实体类，前端传递的参数名需要跟实体类的属性名一致
    @RequestMapping("test2")
    public String hello2(User user){
        System.out.println("Hello SpringMVC Test2");
        System.out.println(user);
        return "welcome";
    }
}
